package com.glx.test.datafluxaispringboot.utils;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.databind.ObjectMapper;

/**
 * @author Jluuno
 */
public class JsonUtils {

    
    // 使用jackson 构建安全标准请求体，底层已转义
    public static String dsBuildJsonBody(String text,String information) throws JsonProcessingException {
        ObjectMapper objectMapper = new ObjectMapper();
        ObjectNode rootNode = objectMapper.createObjectNode();
        rootNode.put("model", "deepseek-chat");

        ArrayNode messages = rootNode.putArray("messages");
        ObjectNode message = messages.addObject();
        message.put("role", "user");
        message.put("content", text + information);

        //判断是对话还是翻译，因为对话直接传输用户问题，翻译需要自己把控提问技巧
        if (information.isEmpty()){
            rootNode.put("stream", true);
        }
        return objectMapper.writeValueAsString(rootNode);
    }


    // 使用jackson构建安全标准请求体，底层已转义
    public static String aliBuildJsonBody(String text, String information) throws JsonProcessingException {
        ObjectMapper objectMapper = new ObjectMapper();
        ObjectNode rootNode = objectMapper.createObjectNode();

        // 添加 model 字段
        rootNode.put("model", "qwen-max");


        // 构建 messages 数组
        ObjectNode inputNode = rootNode.putObject("input");
        ArrayNode messages = inputNode.putArray("messages");

        // 添加 message 内容
        ObjectNode message = messages.addObject();
        message.put("role", "user");
        message.put("message", text + information);

        // 如果没有额外的翻译信息，添加流式处理参数
        if (information.isEmpty()) {
            rootNode.put("stream", true);
        }

        // 添加额外的参数部分
        ObjectNode parametersNode = rootNode.putObject("parameters");
        parametersNode.put("result_format", "message");

        return objectMapper.writeValueAsString(rootNode);
    }


    public static String aliBuildJsonBody2(String text, String information) throws JsonProcessingException {
        // 初始化 ObjectMapper 和根节点
        ObjectMapper objectMapper = new ObjectMapper();
        ObjectNode rootNode = objectMapper.createObjectNode();

        // 设置模型
        rootNode.put("model", "qwen-plus");

        // 构建 messages 数组
        ObjectNode inputNode = rootNode.putObject("input");
        ArrayNode messages = inputNode.putArray("messages");

        // 添加 message 内容
        ObjectNode message = messages.addObject();
        message.put("role", "user");

        // 拼接文本和翻译信息，使用 StringBuilder 提高性能
        StringBuilder contentBuilder = new StringBuilder();
        if (text != null && !text.isEmpty()) {
            contentBuilder.append(text);
        }
        if (information != null && !information.isEmpty()) {
            contentBuilder.append(" ").append(information);  // 在两部分文本间添加空格
        }
        message.put("content", contentBuilder.toString());

        // 如果没有额外的翻译信息，添加流式处理参数
        if (information == null || information.isEmpty()) {
            rootNode.put("stream", true);
        }

        // 添加额外的参数部分
        ObjectNode parametersNode = rootNode.putObject("parameters");
        parametersNode.put("result_format", "message");

        // 返回请求体
        return objectMapper.writeValueAsString(rootNode);
    }



}
